package modelo;

public class Produto implements Comparable<Produto> {
	private int codigo;
	private String nome;
	private double precoBase;
	private double precoPromocao; 
	private boolean emPromocao;
	private double unidades;
	private double vendidos;
	private double estoqueMinimo;
	
	
	public Produto(int codigo, String nome, double precoBase, double precoAtual, boolean emPromocao,
			double unidades, double vendidos, double estoqueMinimo) {
		this.codigo = codigo;
		this.nome = nome;
		this.precoPromocao = precoAtual;
		this.precoBase = precoBase;
		this.emPromocao = emPromocao;
		this.unidades = unidades;
		this.vendidos = vendidos;
		this.estoqueMinimo = estoqueMinimo;
	}

	/**
	 * Comparo dois produtos atraves de seus ponteiros e comparando
	 * se seus codigos sao iguais.
	 */
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Produto other = (Produto) obj;
		if (codigo != other.codigo)
			return false;
		/*
		if (emPromocao != other.emPromocao)
			return false;
		if (nome == null) {
			if (other.nome != null)
				return false;
		} else if (!nome.equals(other.nome))
			return false;
		if (Double.doubleToLongBits(precoPromocao) != Double
				.doubleToLongBits(other.precoPromocao))
			return false;
		if(Double.doubleToLongBits(precoBase) != Double
				.doubleToLongBits(other.precoBase))
			return false;
		if (unidades != other.unidades)
			return false;
		if (vendidos != other.vendidos)
			return false;
		if(Double.doubleToLongBits(estoqueMinimo) != Double
				.doubleToLongBits(other.estoqueMinimo))
			return false;*/
		return true;
	}

	public int getCodigo() {
		return codigo;
	}


	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}


	public String getNome() {
		return nome;
	}


	public void setNome(String nome) {
		this.nome = nome;
	}


	public double getPrecoPromocao() {
		return precoPromocao;
	}


	public void setPrecoPromocao(double precoAtual) {
		this.precoPromocao = precoAtual;
	}
	
	public double getPrecoBase(){
		return precoBase;
	}

	public void setPrecoBase(double precoBase){
		this.precoBase = precoBase;
	}
	
	public double getPreco(){
		if(isEmPromocao()){
			return precoPromocao;
		}
		else {
			return precoBase;
		}
	}
	
	public boolean isEmPromocao() {
		return emPromocao;
	}


	public void setEmPromocao(boolean emPromocao) {
		this.emPromocao = emPromocao;
	}


	public double getUnidades() {
		return unidades;
	}


	public void setUnidades(double unidades) {
		this.unidades = unidades;
	}


	public double getVendidos() {
		return vendidos;
	}


	public void setVendidos(double vendidos) {
		this.vendidos = vendidos;
	}
	

	public double getEstoqueMinimo() {
		return estoqueMinimo;
	}


	public void setEstoqueMinimo(double estoqueMinimo) {
		this.estoqueMinimo = estoqueMinimo;
	}


	@Override
	public int compareTo(Produto p) {
		// A comparacao entre dois produtos e feita atraves do codigo
		return ((Integer)codigo).compareTo(p.codigo);
	}
	
}
